import { RouteRecordRaw } from 'vue-router';

/**
 * 建议：路由 path 路径与文件夹名称相同，找文件可浏览器地址找，方便定位文件位置
 *
 * 路由meta对象参数说明
 * meta: {
 *      title:          菜单栏及 tagsView 栏、菜单搜索名称（国际化）
 *      isLink：        是否超链接菜单，开启外链条件，`1、isLink: 链接地址不为空 2、isIframe:false`
 *      isHide：        是否隐藏此路由
 *      isKeepAlive：   是否缓存组件状态
 *      isAffix：       是否固定在 tagsView 栏上
 *      isIframe：      是否内嵌窗口，开启条件，`1、isIframe:true 2、isLink：链接地址不为空`
 *      roles：         当前路由权限标识，取角色管理。控制路由显示、隐藏。超级管理员：admin 普通角色：common
 *      icon：          菜单、tagsView 图标，阿里：加 `iconfont xxx`，fontawesome：加 `fa xxx`
 * }
 */

// 扩展 RouteMeta 接口
declare module 'vue-router' {
	interface RouteMeta {
		title?: string;
		isLink?: string;
		isHide?: boolean;
		isKeepAlive?: boolean;
		isAffix?: boolean;
		isIframe?: boolean;
		roles?: string[];
		icon?: string;
	}
}

/**
 * 定义动态路由
 * 前端添加路由，请在顶级节点的 `children 数组` 里添加
 * @description 未开启 isRequestRoutes 为 true 时使用（前端控制路由），开启时第一个顶级 children 的路由将被替换成接口请求回来的路由数据
 * @description 各字段请查看 `/@/views/system/menu/component/addMenu.vue 下的 ruleForm`
 * @returns 返回路由菜单数据
 */
// export const dynamicRoutes: Array<RouteRecordRaw> = [
// 	{
// 		path: '/',
// 		name: '/',
// 		component: () => import('/@/layout/index.vue'),
// 		redirect: '/home',
// 		meta: {
// 			isKeepAlive: true,
// 		},
// 		children: [
// 			{
// 				path: '/home',
// 				name: 'home',
// 				component: () => import('/@/views/home/index.vue'),
// 				meta: {
// 					title: '首页1',
// 					isLink: '',
// 					isHide: false,
// 					isKeepAlive: true,
// 					isAffix: true,
// 					isIframe: false,
// 					icon: 'iconfont icon-shouye',
// 				},
// 			},
//             {
// 				path: '/link',
// 				name: 'ElementPlus',
// 				component: () => import('/@/layout/routerView/iframes.vue'),
// 				meta: {
// 					title: 'ElementPlus',
// 					isLink: 'https://element-plus.gitee.io/#/zh-CN/component/installation',
// 					isHide: false,
// 					isKeepAlive: false,
// 					isAffix: false,
// 					isIframe: false,
// 					roles: ['admin'],
// 					icon: 'ele-ElementPlus',
// 				},
// 			},
// 			{
// 				path: '/auth',
// 				name: 'auth',
// 				component: () => import('/@/layout/routerView/parent.vue'),
// 				redirect: '/auth/user',
// 				meta: {
// 					title: '权限管理',
// 					isLink: '',
// 					isHide: false,
// 					isKeepAlive: true,
// 					isAffix: false,
// 					isIframe: false,
// 					permission: 'admin:view',
// 					icon: 'iconfont icon-quanxian',
// 				},
// 				children: [
//                     {
// 						path: '/auth/user',
// 						name: 'authUser',
// 						component: () => import('/@/views/auth/user/index.vue'),
// 						meta: {
// 							title: '用户管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'user:view',
// 							icon: 'iconfont icon-yonghu',
// 						},
// 					},
//                     {
// 						path: '/auth/permission',
// 						name: 'authPermission',
// 						component: () => import('/@/views/auth/permission/index.vue'),
// 						meta: {
// 							title: '权限管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'permission:view',
// 							icon: 'ele-Discount',
// 						},
// 					},
//                     {
// 						path: '/auth/menu',
// 						name: 'authMenu',
// 						component: () => import('/@/views/auth/menu/index.vue'),
// 						meta: {
// 							title: '菜单管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'menu:view',
// 							icon: 'iconfont icon-caidan',
// 						},
// 					},
//                     {
// 						path: '/auth/role',
// 						name: 'authRole',
// 						component: () => import('/@/views/auth/role/index.vue'),
// 						meta: {
// 							title: '角色管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'role:view',
// 							icon: 'iconfont icon-navicon-jsgl',
// 						},
// 					},
//                     {
// 						path: '/auth/organ',
// 						name: 'authOrgan',
// 						component: () => import('/@/views/auth/organ/index.vue'),
// 						meta: {
// 							title: '组织机构',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'organ:view',
// 							icon: 'ele-OfficeBuilding',
// 						},
// 					},
//                     {
// 						path: '/auth/permissionRelation',
// 						name: 'permissionRelation',
// 						component: () => import('/@/views/auth/permissionRelation/index.vue'),
// 						meta: {
// 							title: '授权',
// 							isLink: '',
// 							isHide: true,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'resource:view',
// 							icon: 'ele-OfficeBuilding',
// 						},
// 					},
// 				],
// 			},
//             {
// 				path: '/admin',
// 				name: 'admin',
// 				component: () => import('/@/layout/routerView/parent.vue'),
// 				redirect: '/admin/param',
// 				meta: {
// 					title: '系统管理',
// 					isLink: '',
// 					isHide: false,
// 					isKeepAlive: true,
// 					isAffix: false,
// 					isIframe: false,
// 					permission: 'admin:view',
// 					icon: 'iconfont icon-xitong',
// 				},
// 				children: [
//                     {
// 						path: '/admin/param',
// 						name: 'adminParam',
// 						component: () => import('/@/views/system/param/index.vue'),
// 						meta: {
// 							title: '参数管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'param:view',
// 							icon: 'ele-Crop',
// 						},
// 					},
//                     {
// 						path: '/admin/session',
// 						name: 'adminSession',
// 						component: () => import('/@/views/system/session/index.vue'),
// 						meta: {
// 							title: '会话管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'param:view',
// 							icon: 'iconfont icon-huihua',
// 						},
// 					},
//                     {
// 						path: '/admin/dict',
// 						name: 'adminDict',
// 						component: () => import('/@/views/system/dict/index.vue'),
// 						meta: {
// 							title: '数据字典',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'param:view',
// 							icon: 'iconfont icon-shujuzidian',
// 						},
// 					},
//                     {
// 						path: '/admin/cache',
// 						name: 'adminCache',
// 						component: () => import('/@/views/system/cache/index.vue'),
// 						meta: {
// 							title: '缓存管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'param:view',
// 							icon: 'iconfont icon-huancun',
// 						},
// 					},
//                     {
// 						path: '/admin/file',
// 						name: 'adminFile',
// 						component: () => import('/@/views/system/file/index.vue'),
// 						meta: {
// 							title: '文件管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'param:view',
// 							icon: 'iconfont icon-wenjianjia',
// 						},
// 					},
//                     {
// 						path: '/admin/opinion',
// 						name: 'adminOpinion',
// 						component: () => import('/@/views/system/opinion/index.vue'),
// 						meta: {
// 							title: '意见反馈',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'param:view',
// 							icon: 'iconfont icon-zhihangfankui',
// 						},
// 					},
// 				],
// 			},
//             {
// 				path: '/logger',
// 				name: 'logger',
// 				component: () => import('/@/layout/routerView/parent.vue'),
// 				redirect: '/logger/loginLog',
// 				meta: {
// 					title: '日志管理',
// 					isLink: '',
// 					isHide: false,
// 					isKeepAlive: true,
// 					isAffix: false,
// 					isIframe: false,
// 					permission: 'admin:view',
// 					icon: 'iconfont icon-rizhi',
// 				},
// 				children: [
//                     {
// 						path: '/logger/loginLog',
// 						name: 'loggerLoginLog',
// 						component: () => import('/@/views/logger/loginLog/index.vue'),
// 						meta: {
// 							title: '登录日志',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'user:view',
// 							icon: 'iconfont icon-guanlidenglurizhi',
// 						},
// 					},
//                     {
// 						path: '/logger/webLog',
// 						name: 'loggerWebLog',
// 						component: () => import('/@/views/logger/webLog/index.vue'),
// 						meta: {
// 							title: '访问日志',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'user:view',
// 							icon: 'ele-Notebook',
// 						},
// 					},
//                     {
// 						path: '/logger/errorInfo',
// 						name: 'loggerErrorInfo',
// 						component: () => import('/@/views/logger/errorInfo/index.vue'),
// 						meta: {
// 							title: '错误日志',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'user:view',
// 							icon: 'iconfont icon-cuowurizhi',
// 						},
// 					},
// 				],
// 			},
//             {
// 				path: '/flow',
// 				name: 'flow',
// 				component: () => import('/@/layout/routerView/parent.vue'),
// 				redirect: '/flow/modelInfo',
// 				meta: {
// 					title: '引擎管理',
// 					isLink: '',
// 					isHide: false,
// 					isKeepAlive: true,
// 					isAffix: false,
// 					isIframe: false,
// 					permission: 'admin:view',
// 					icon: 'iconfont icon-gongzuoliu',
// 				},
// 				children: [
//                     {
// 						path: '/flow/modelInfo',
// 						name: 'flowModelInfo',
// 						component: () => import('/@/views/flow/modelInfo/index.vue'),
// 						meta: {
// 							title: '模型管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'user:view',
// 							icon: 'iconfont icon-moxingliebiao',
// 						},
// 					},
//                     {
// 						path: '/flow/leave',
// 						name: 'flowLeave',
// 						component: () => import('/@/views/flow/leave/index.vue'),
// 						meta: {
// 							title: '请假管理',
// 							isLink: '',
// 							isHide: false,
// 							isKeepAlive: true,
// 							isAffix: false,
// 							isIframe: false,
// 							permission: 'user:view',
// 							icon: 'iconfont icon-moxingliebiao',
// 						},
// 					},
// 				],
// 			},
// 		],
// 	},
// ];

//在backEnd中由后端菜单路由填充
export const dynamicRoutes: Array<RouteRecordRaw> = [{
		path: '/',
		name: '/',
		component: () => import('/@/layout/index.vue'),
		redirect: '/home',
		meta: {
			isKeepAlive: true,
		},
		children: [
			
		],
	},
];

/**
 * 定义404、401界面
 * @link 参考：https://next.router.vuejs.org/zh/guide/essentials/history-mode.html#netlify
 */
export const notFoundAndNoPower = [
	{
		path: '/:path(.*)*',
		name: 'notFound',
		component: () => import('/@/views/error/404.vue'),
		meta: {
			title: 'message.staticRoutes.notFound',
			isHide: true,
		},
	},
	{
		path: '/401',
		name: 'noPower',
		component: () => import('/@/views/error/401.vue'),
		meta: {
			title: 'message.staticRoutes.noPower',
			isHide: true,
		},
	},
];

/**
 * 定义静态路由（默认路由）
 * 此路由不要动，前端添加路由的话，请在 `dynamicRoutes 数组` 中添加
 * @description 前端控制直接改 dynamicRoutes 中的路由，后端控制不需要修改，请求接口路由数据时，会覆盖 dynamicRoutes 第一个顶级 children 的内容（全屏，不包含 layout 中的路由出口）
 * @returns 返回路由菜单数据
 */
export const staticRoutes: Array<RouteRecordRaw> = [
	{
		path: '/login',
		name: 'login',
		component: () => import('/@/views/login/index.vue'),
		meta: {
			title: '登录',
		},
	},
	/**
	 * 提示：写在这里的为全屏界面，不建议写在这里
	 * 请写在 `dynamicRoutes` 路由数组中
	 */
	{
		path: '/visualizingDemo1',
		name: 'visualizingDemo1',
		component: () => import('/@/views/visualizing/demo1.vue'),
		meta: {
			title: 'message.router.visualizingLinkDemo1',
		},
	},
	{
		path: '/visualizingDemo2',
		name: 'visualizingDemo2',
		component: () => import('/@/views/visualizing/demo2.vue'),
		meta: {
			title: 'message.router.visualizingLinkDemo2',
		},
	},
];
